#ifndef __SUBSYSTEM_CHEST_BLOCK_BEHAVIOR_H__
#define __SUBSYSTEM_CHEST_BLOCK_BEHAVIOR_H__

#include "SubsystemBlockBehavior.hpp"

namespace PocketSurvival
{
    class SubsystemBlockEntities;
    
    class SubsystemChestBlockBehavior : public SubsystemBlockBehavior
    {
    public:
        SubsystemBlockEntities *m_subsystemBlockEntities;

    public:
        SubsystemChestBlockBehavior();

        virtual void onBlockAdded(int32_t value, int32_t oldValue, int32_t x, int32_t y, int32_t z) override;
        virtual void onBlockRemoved(int32_t value, int32_t newValue, int32_t x, int32_t y, int32_t z) override;
        virtual bool onInteract(const TerrainRaycastResult &raycastResult, ComponentMiner *componentMiner) override;
        virtual void onHitByProjectile(const CellFace &cellFace, WorldItem *worldItem) override;

        virtual const std::string &getName() const override;
        virtual void load(const nlohmann::json &json) override;
    };
}

#endif